package com.shujia.scala

import scala.io.Source

object Demo19Fun6 {
  def main(args: Array[String]): Unit = {

    //1、读取学生表的数据
    val students: Array[String] = Source
      .fromFile("data/students.txt") //读取文件
      .getLines() //获取所有行
      .toArray // 转换成数组

    /**
      * 取出所有学生的学号
      *
      * map： 将数组中的元素一个一个传递给后面的函数，最终将函数的返回值构建成一个新的数组
      *
      * 传入一行数据返回一行数据，总体的数量行数不变
      */

    val ids: Array[String] = students.map((student: String) => {
      //切分数据，取出id
      val split: Array[String] = student.split(",")

      //返回学号
      split(0)
    })

    ids.foreach(println)

    println("=" * 100)

    /**
      * 取出所有文科一班的学生
      *
      */

    //java 循环的思路
    for (student <- students) {
      //将数据拆分
      val split: Array[String] = student.split(",")
      //取出班级
      val clazz: String = split(4)

      //判断
      if ("文科一班".equals(clazz)) {
        println(student)
      }
    }
    println("=" * 100)

    /**
      * scala的方式
      *
      * filter: 将数组中的元素一个一个传递给后面的函数
      * 如果函数返回True保留数据
      * 如果函数返回False过滤数据
      *
      * 数据会变少
      *
      */

    val filterStudents: Array[String] = students.filter((student: String) => {
      //切分数据
      val split: Array[String] = student.split(",")
      //取出班级
      val clazz: String = split(4)
      //条件判断
      "文科一班".equals(clazz)
    })

    filterStudents.foreach(println)

    //简写
    //students.filter(s => "文科一班".equals(s.split(",")(4)))


    //这里的*号是一个方法
    println("=".*(100))

    //简写
    println("=" * 100)


  }

}
